perm filename EX2.SAI[SAI,BGB] blob sn#140812 filedate 1975-01-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "EXAMPLE TWO"
C00005 ENDMK
C⊗;
BEGIN "EXAMPLE TWO"
	REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
	REQUIRE "GEOMES.HDR[SAI,BGB]" SOURCE_FILE;
	INTEGER I,B0,B1,C;
	REAL X,Y,Z,U,V,W;
α SEQUENCE GENERATOR - S(X) = (137*X + 187)MOD 256 = (137*X - 69)MOD 256;
	SAFE SIMPLE INTEGER PROCEDURE S(INTEGER X);
	START_CODE
		DEFINE P="'17";
		MOVE 1,-1(P);IMULI 1,137;ADDI 1,187;
		ANDI 1,'377;POP P,-1(P);POPJ P,;
	END;	

α INITIALIZE GEOMED & THE PROTOTYPE OBJECT;
	MKUNIV;
	C ← SON(SON(UNIVERSE));		α FETCH NOW CAMERA;
	ROTATE(C,-π/3,π/2,0);
α	B0 ← MKCUBE(8,8,8);
α	GEOMED;

α	SHOW2(0,0);
α	PLOTO("X0");
α	KLBFEV(B0);
	B0 ← MKCUBE(.2,.2,.2);

α PLACE 256 OBJECTS INTO THE 8 FOOT CUBE OF SPACE IMMEDIATELY IN VIEW OF THE CAMERA;
	U←30.49; V←-69.2; W←-43.25;
	FOR I←0 THRU 255 DO
BEGIN
	B1 ← (IF I=255 THEN B0 ELSE MKCOPY(B0));
	X ← (I - 128)/32;
	Y ← (S(I) - 128)/32;
	Z ← (S(S(I)) - 128)/32;
	IF (X-4)*U+(Y-4)*V+(Z+4)*W ≤ 0 THEN KLBFEV(B1) ELSE TRANSL(B1,X,Y,Z);
END;

α CREATE PLOT FILES OF THE OBJECTS VIEWED FROM VARIOUS CAMERA POSITIONS;
	SHOW2(0,0);
	PLOTO("X6");
END "EXAMPLE TWO";